/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import beans.*;
import beans.Mensaje;
import beans.PedidoBD;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Calendar;
import packetTracker.Dispatcher;
import request.PedidoClienteRequest;
import response.PedidoClienteResponse;

/**
 *
 * @author Miguel
 */
public class PedidoDAO extends ConnectBD{
    private static ArrayList<PedidoBD> pedidosBD = new ArrayList<>();
    
    public Mensaje ActualizarPedido() throws SQLException {
        Mensaje mensaje = new Mensaje();
        mensaje.me = "";
        String sql;
        pedidosBD = Dispatcher.getPedidosBD();
        for(int i = 0; i < pedidosBD.size(); i++){
            if(pedidosBD.get(i).getMinRest() != 0){
                sql = "UPDATE pedido" +
                      " SET retraso = " + (double)pedidosBD.get(i).getMinRest() +
                      " , estado = " + pedidosBD.get(i).getEstado() +
                      " WHERE idPEDIDO = " + pedidosBD.get(i).getIdPedido();
                Statement st = conexion.conn.createStatement();
                try{
                    st.executeUpdate(sql);
                }catch(Exception e){
                    mensaje.me = e.toString();
                }
            }
        }
        return mensaje;
        
    }
    
    public PedidoClienteResponse BuscarPedido(PedidoClienteRequest pedido) throws SQLException{
        PedidoClienteResponse lista = new PedidoClienteResponse();
        lista.me = "";
        
        String sql;
        sql = "SELECT P.idPEDIDO,P.cantidadProductoTotal,P.estado,P.tiempoEntrega,P.horaPedido,P.fechaPedido "+
              "FROM pedido P WHERE P.idCLIENTE = '" + pedido.id + "' AND P.fechaPedido <= '" + pedido.fecha + "' AND P.estado > 0";
        
        Statement st = conexion.conn.createStatement();
        
        st.executeQuery(sql);
        ResultSet rs = st.getResultSet();
        
        ArrayList<PedidoCliente> listaPedido = new ArrayList<PedidoCliente>();
        while(rs.next()){
            PedidoCliente aux = new PedidoCliente();
            aux.id =  rs.getInt(1);
            aux.cantidad = rs.getInt(2);
            aux.estado = rs.getInt(3);
            aux.tiempoEntrega = rs.getInt(4);
            aux.horaPedido = rs.getString(5);
            aux.fechaPedido = rs.getString(6);
            listaPedido.add(aux);
        }
        lista.lPedido = listaPedido;
        
        return lista;
    }

    public int ObtenerId(String[] diaMesAno) throws SQLException {
        String sql;
        sql = "SELECT count(*) "+
              "FROM pedido WHERE fechaPedido <'" + diaMesAno[0]+"-"+diaMesAno[1]+"-"+diaMesAno[2]+"';";
        
        Statement st = conexion.conn.createStatement();
        
        st.executeQuery(sql);
        ResultSet rs = st.getResultSet();
        int idPedido = 0;
        while(rs.next()){
            idPedido = rs.getInt("count(*)");
        }
        return idPedido;
    }

    public void pronostico(int[] pedidos_x_dia, int[] paquetes_x_dia) throws SQLException {
        int cont = -1;
        for(int j = 0; j < pedidos_x_dia.length;j++){
            if(pedidos_x_dia[j] == 0){
                break;
            }
            cont++;
        }
        System.out.println(cont);
        Calendar fecha = Calendar.getInstance();
        fecha.set(2013,5,18);
        for(int i = 0; i <= cont; i++){
            try{
                String dia = String.valueOf(fecha.get(Calendar.DATE));
                String mes = String.valueOf(fecha.get(Calendar.MONTH)+1);
                String anho = String.valueOf(fecha.get(Calendar.YEAR));
                String fec = anho+"-"+mes+"-"+dia;
                String sql = "INSERT INTO pronostico (fecha,numPedidos,numPaquetes) VALUES('"+fec+"',"+pedidos_x_dia[i]+","+paquetes_x_dia[i]+")";
                Statement stmt = this.conexion.conn.createStatement();
                stmt.execute(sql);
                System.out.println(sql);
            }catch(Exception e){ System.out.println(e.toString());}
            fecha.add(Calendar.DATE, 1);
        }
    }
}
